initial commit
[AXOD IR_433MHz Shield] / FIRMWARE / pwm.c
1
2 void pwm_handler(void){
3
4         static uint8_t cnt_pwm = 0;
5
6         if (cnt_pwm == 0 ) output_high(PORTB, PWM);
7         if (cnt_pwm == PWM_scale * PWM_MAX / 100 ) output_low(PORTB, PWM);
8         if (cnt_pwm++ == PWM_MAX) cnt_pwm = 0;
9
10 }
11
12 void pwm_scale_handler( void ){
13
14         static uint8_t PWM_scale_cnt = 0;
15
16         if ( PWM_scale_flag &&  PWM_scale_cnt++ % 32 == 0 ){
17                 if ( PWM_scale_target > PWM_scale ) PWM_scale++;
18                 else if ( PWM_scale_target < PWM_scale ) PWM_scale--;
19                 else if ( PWM_scale_target == PWM_scale ) PWM_scale_flag = false;
20         
21                 if ( CIEL8[ PWM_scale ] == 0 ) TCCR0A &=~ (1<<COM0A1); else TCCR0A |= (1<<COM0A1);
22                 OCR0A = CIEL8[ PWM_scale ];     // 0..255 with OCIE0A // < 0..100 with pwm_handler
23         }
24
25 }
Contact me: dev (at) shalnoff (dot) com
PGP fingerprint: A6B8 3B23 6013 F18A 0C71 198B 83D8 C64D 917A 5717